package org.ziwei.paipan.biao;

import org.ziwei.paipan.var.DiZhi;
/**
 * 日系诸星表
 * 根据出生日，定日系诸星宫位
 */
public class RiXiZhuXingBiao {
	/**
	 * 由左辅星所在宫位上起初一日，沿十二宫顺时针方向数至出生日止，此宫安三台星。例如：左辅星在卯宫，农历11日生人，顺时针数11宫，丑宫安三台星。
	 * 根据出生月份和出生日期，返回三台所在宫支
	 * @param month 出生月份 
	 * @param day 出生日期
	 * @return DiZhi
	 */
	public static DiZhi anSanTai(int month, int day){
		DiZhi zuoFu = YueXiZhuXingBiao.anZuoFu(month);
		return DiZhi.values()[(zuoFu.ordinal() + day -1) % 12];
	}
	
	/**
	 * 由右弼星所在宫位上起初一日，沿十二宫逆时针方向数至出生日止，此宫安八座星。例如：右弼星在亥宫，农历11日生人，逆时针数11宫，丑宫安八座星。
	 * 根据出生月份和出生日期，返回八座所在宫支
	 * @param month 出生月份 
	 * @param day 出生日期
	 * @return DiZhi
	 */
	public static DiZhi anBaZuo(int month, int day){
		DiZhi youBi = YueXiZhuXingBiao.anYouBi(month);
		return DiZhi.values()[(youBi.ordinal() - day + 1 + 12 + 36) % 12];
	}
	
	/**
	 * 由文曲星所在宫位上起初一日，顺时针方向数，数至出生日宫再退回一宫，此宫安天贵星。例如：文曲星在未宫，农历11日生人，顺时针数10宫，辰宫安天贵星。
	 * 根据出生时辰和出生日期，返回恩光所在宫支
	 * @param shiChen 出生时辰 
	 * @param day 出生日期
	 * @return DiZhi
	 */
	public static DiZhi anEnGuang(DiZhi shiChen, int day){
		DiZhi wenChang = ShiXiZhuXingBiao.anWenChang(shiChen);
		return DiZhi.values()[(wenChang.ordinal() + day - 2 ) % 12];
	}
	
	/**
	 * 由文昌星所在宫位上起初一日，顺时针方向数，数至出生日宫再退回一宫，此宫安恩光星。例如：文昌星在未宫，农历11日生人，顺时针数10宫，辰宫安恩光星
	 * 根据出生时辰和出生日期，返回恩光所在宫支
	 * @param shiChen 出生时辰 
	 * @param day 出生日期
	 * @return DiZhi
	 */
	public static DiZhi anTianGui(DiZhi shiChen, int day){
		DiZhi wenQu = ShiXiZhuXingBiao.anWenQu(shiChen);
		return DiZhi.values()[(wenQu.ordinal() + day - 2 ) % 12];
	}
	
}
